package JZ;

/**
 * @Classname JZ68II
 * @Description // https://leetcode-cn.com/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/ 树  经典
 * @Date 2021/4/21 14:54
 * @Created by yin
 */
// 找公共祖先， 我们就找这个两个节点 。 先找到这两个节点，再判断是不是在一个方向。
//     * 1、p q 一个在左子树 一个在右子树 那么当前节点即是最近公共祖先
//     * 2、p q 都在左子树
//     * 3、p q 都在右子树
public class JZ68II {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if (root == null) return null;
        if (root == p || root == q) return root;
        TreeNode left = lowestCommonAncestor(root.left, p, q);
        TreeNode right = lowestCommonAncestor(root.right, p, q);
        if (left != null && right != null) { // pq在左右两边
            return root;
        }
        if (left != null) { // pq都在左边
            return left;
        }
        return right;
    }
}
